package handler

import (
	"github.com/zeromicro/go-zero/rest"
	"net/http"
)

type Routers struct {
	server     *rest.Server
	middleWare []rest.Middleware //要使用的中间件
}

func NewRouters(server *rest.Server) *Routers {
	return &Routers{
		server: server,
	}
}

func (r *Routers) Get(path string, handlerFunc http.HandlerFunc) {
	r.server.AddRoutes( //添加路由
		rest.WithMiddlewares( //该路由, 使用哪些中间件
			r.middleWare,
			rest.Route{
				Method:  http.MethodGet,
				Path:    path,
				Handler: handlerFunc,
			},
		),
	)
}

func (r *Routers) Post(path string, handlerFunc http.HandlerFunc) {
	r.server.AddRoutes( //添加路由
		rest.WithMiddlewares( //该路由, 使用哪些中间件
			r.middleWare,
			rest.Route{
				Method:  http.MethodPost,
				Path:    path,
				Handler: handlerFunc,
			},
		),
	)
}

// Group 分组
func (r *Routers) Group() *Routers {
	return &Routers{ //使用server, 重新创建一个分组Router (所有的分组都使用同一个内核server服务, 但是不同的组, 挂不同的中间件数组)
		server: r.server,
	}
}
